import {defineStore} from 'pinia';
import {
	getMsgListApi,
	getOfflineMsgListApi,
} from '@/api/chat';
import {
	dayjs,
} from '@/utils/dayjs.js'

export const useChatStore = defineStore('chat', {
	state: () => {
		return {
			userId: '', // 在首页登录成功加载时 获取值
			chatList: [{
				type: 'system',
				id: 1,
				badge: 1,
				ids: 'system_1',
			}], // 聊天对象列表
			chatStateMap: {
				'system_1': {
					notice: false,
					topping: 0,
				}
			},
			systemList: [{
				type: 'system',
				id: 1,
				avatar: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png',
				name: '精英荟团队',
				note: '欢迎登陆精英荟交友。如果你在使用过程中有任何的问题或建议，记得给我发信反馈哦',
				time: 1669027690459,
			}],
			msgMap: {},
			emojiType: 1, // 1: 表情包 2、收藏表情包
			emojiList: {
				'嘿嘿': '😀',
				'斜眼笑': '😆',
				'苦笑': '😅',
				'笑哭了': '😂',
				'呵呵': '🙂',
				'倒脸': '🙃',
				'眨眼': '😉',
				'花痴': '😍',
				'好崇拜哦': '🤩',
				'飞吻': '😘',
				'亲亲': '😗',
				'微笑': '☺',
				'吐舌': '😛',
				'单眼吐舌': '😜',
				'滑稽': '🤪',
				'眯眼吐舌': '😝',
				'发财': '🤑',
				'抱抱': '🤗',
				'想一想': '🤔',
				'闭嘴': '🤐',
				'挑眉': '🤨',
				'冷漠': '😐',
				'无语': '😑',
				'沉默': '😶',
				'得意': '😏',
				'不高兴': '😒',
				'翻白眼': '🙄',
				'说谎': '🤥',
				'沉思': '😔',
				'困': '😪',
				'流口水': '🤤',
				'睡着了': '😴',
				'感冒': '😷',
				'受伤': '🤕',
				'呕吐': '🤮',
				'打喷嚏': '🤧',
				'冷脸': '🥶',
				'晕头转向': '😵',
				'爆炸头': '🤯',
				'牛仔帽脸': '🤠',
				'带单片眼镜的脸': '🧐',
				'担心': '😟',
				'害怕': '😨',
				'冷汗': '😰',
				'放声大哭': '😭',
				'失望': '😞',
				'打哈欠': '🥱',
				'傲慢': '😤',
				'生气': '😠',
				'头骨': '💀',
				'大便': '💩',
				'小丑脸': '🤡',
				'鬼': '👻',
				'外星人': '👽',
				'机器人': '🤖',
				'情书': '💌',
				'心碎': '💔',
				'唇印': '💋',
				'一百分': '💯',
				'爆炸': '💥',
				'汗滴': '💦'
			},
			latelyEmojiList: {
				'嘿嘿': '😀',
				'好崇拜哦': '🤩',
				'飞吻': '😘',
				'斜眼笑': '😆',
				'苦笑': '😅',
				'笑哭了': '😂',
				'呵呵': '🙂',
				'花痴': '😍',
			}
		}
	},
	getters: {
		chatMap: (state) => state.chatList.reduce((pre, v) => {
			pre[v.type + '_' + v.id] = v;
			return pre;
		}, {}),
	},
	// actions: {
		// 获取消息
		// async getMsgList(params = {}) {
		// 	try {
		// 		let {
		// 			data
		// 		} = await getMsgListApi({
		// 			page: 1,
		// 			limit: 500,
		// 			uid: this.userId,
		// 			...params
		// 		});
		// 		if (data.code == 1) {
		// 			if (params.receive) {
		// 				this.msgMap['friend_' + params.receive] = data.data.records;
		// 			} else if (params.groupId) {
		// 				this.msgMap['group_' + params.groupId] = data.data.records;
		// 			}
		// 		}
		// 	} catch (e) {
		// 		throw Error(e);
		// 	}
		// },
		// 获取离线消息
	// 	async getOfflineMsgList(params = {}) {
	// 		try {
	// 			let {
	// 				data
	// 			} = await getOfflineMsgListApi({
	// 				...params
	// 			});
	// 		} catch (e) {
	// 			throw Error(e);
	// 		}
	// 	},
	// 	// 添加消息
	// 	async addMsg(type, id, msg) {
	// 		let pages = getCurrentPages();
	// 		let page = pages[pages.length - 1];
	// 		let index = this.chatList.findIndex(item => item.type === type && item.id == id);
	// 		if (this.msgMap[type + '_' + id]) {
	// 			this.msgMap[type + '_' + id].splice(0, 0, msg);
	// 		} else {
	// 			this.msgMap[type + '_' + id] = [msg];
	// 		}

	// 		if (index === -1) {
	// 			this.putChatList({
	// 				type,
	// 				id,
	// 				badge: page.route != 'pages/chat/chat' ? 1 : 0,
	// 			});
	// 		} else {
	// 			if (page.route != 'pages/chat/chat' && msg.send !== this.userId) {
	// 				this.chatList[index].badge += 1;
	// 			} else {
	// 				uni.$emit('receive-msg', {
	// 					index,
	// 					msg,
	// 				});
	// 			}
	// 		}
	// 		this.chatBadge();
	// 	},
	// 	/* 消息的badge */
	// 	chatBadge(name, id) {
	// 		let num = this.chatList.reduce((pre, v) => this.chatStateMap[v.ids].notice ? pre : pre + v.badge,
	// 			0);
	// 		if (num > 0) {
	// 			uni.setTabBarBadge({
	// 				index: 0,
	// 				text: num,
	// 			});
	// 		} else {
	// 			uni.removeTabBarBadge({
	// 				index: 0,
	// 			})
	// 		}
	// 	},
	// 	// 修改 chatList
	// 	putChatList({
	// 		type = 'friend',
	// 		id = -1,
	// 		badge = 0,
	// 	}, bol = true) {
	// 		if (id === -1) return;
	// 		let index = this.chatList.findIndex(item => item.type === type && item.id == id);
	// 		if (bol) {
	// 			if (index === -1) {
	// 				this.chatList.push({
	// 					type,
	// 					id,
	// 					badge,
	// 					ids: type + '_' + id,
	// 				});

	// 				if (!this.chatStateMap[type + '_' + id]) {
	// 					this.chatStateMap[type + '_' + id] = {
	// 						notice: false,
	// 						topping: 0,
	// 					}
	// 				}
	// 			}
	// 		} else {
	// 			index !== -1 && this.chatList.splice(index, 1);
	// 		}
	// 	}
	// },
	// unistorage: true,
});
